package com.gitee.helioz.openai.api.endpoint.images;

import com.gitee.helioz.openai.api.dto.images.ImageEditRequest;
import com.gitee.helioz.openai.api.dto.images.ImageGenerationRequest;
import com.gitee.helioz.openai.api.dto.images.ImageGenerationResponse;
import com.gitee.helioz.openai.api.dto.images.ImageVariationRequest;

/**
 * 〈图片服务〉
 *
 * @author <a href="https://gitee.com/helioz">Morning Starr</a>
 */
public interface ImageService {

    /**
     * 生成图像
     * <p><a href="https://platform.openai.com/docs/api-reference/images/create">文档</a></p>
     * @param imageRequest 请求对象
     * @return 响应对象
     */
    ImageGenerationResponse generations(ImageGenerationRequest imageRequest);

    /**
     * 编辑图像
     * <p><a href="https://platform.openai.com/docs/api-reference/images/create-edit">文档</a></p>
     * @param imageRequest 请求对象
     * @return 响应对象
     */
    ImageGenerationResponse edits(ImageEditRequest imageRequest);

    /**
     * 创建图像变体
     * <p>是指使用图像编辑技术或算法生成图像的不同版本或变体。
     * 这些变体可以通过修改原始图像的各个方面，如颜色、对比度、亮度、饱和度，或者应用滤镜、效果或其他图像处理技术来生成。
     * 创建图像变体的目的是为了提供相同图像的不同视角、风格或视觉呈现，或者基于原始图像生成具有不同视觉特性的新图像。
     * 这在艺术、设计、广告和多媒体制作等领域中可能很有用，因为不同的图像变体可能在不同的目的或目标受众中需要使用。</p>
     * <p><a href="https://platform.openai.com/docs/api-reference/images/create-variation">文档</a></p>
     * @param imageRequest 请求对象
     * @return 响应对象
     */
    ImageGenerationResponse variations(ImageVariationRequest imageRequest);
}
